home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / PET / S-Super PET / (s)tj.d64 / GRAPH.LETTER.ASM < prev    next >
Assembly Source File  |  2009-01-18  |  11KB  |  241 lines

  1. opt     nolist;         graph.letter.asm   Oct 6, 1983. Avygdor Moise
  2.  
  3. null            equ     $00
  4. vertical_bar    equ     $01
  5. horizontal_bar  equ     $02
  6. right_bottom    equ     $03
  7. left_bottom     equ     $04
  8. left_top        equ     $05
  9. right_top       equ     $06
  10. cross_bar       equ     $0b
  11. blank           equ     $20
  12.  
  13. xdef    graph_letter
  14.  
  15. graph_letter    equ     *       ; p1 = address of top left corner
  16.                                 ; p2 = letter to display (8 bits)
  17.  
  18.         pshs    y,x,d
  19.  
  20.         tfr     d,x             ;x <-- starting address
  21.         jsr     top_line        ;[--------]
  22.         leax    70,x
  23.         ldy     #character_table
  24.         ldb     9,s             ;position index in ascii table
  25.  
  26.         if      lt
  27.                 lda     #$80    ;hi bit set ---> reverse the field
  28.         else
  29.                 clra            ;hi bit clear -> normal field
  30.         endif
  31.  
  32.         pshs    a               ;on the stack field descriptor
  33.  
  34.         andb    #$7f            ;disable high bit (7th)
  35.         lda     #8              ;8 raster lines per letter (8x8)
  36.         mul                     ;calculate offset
  37.         leay    d,y             ;y points to first byte of the eight
  38.  
  39.         lda     #8              ;number of raster lines
  40.         pshs    a               ;outter loop counter
  41.         loop
  42.                 lda     #vertical_bar
  43.                 sta     ,x+     ;|.............
  44.  
  45.                 lda     #8      ;inner loop counter
  46.                 ldb     ,y+     ;get a raster line image
  47.                 loop
  48.                         aslb
  49.                         pshs    b
  50.                         if      cs
  51.                                 ldb     #$a0    ;reverse field space
  52.                         else
  53.                                 ldb     #$20    ;space
  54.                         endif
  55.  
  56.                         eorb    2,s             ;select the proper field
  57.                         stb     ,x+
  58.  
  59.                         puls    b
  60.                         deca
  61.                 until   eq
  62.  
  63.                 lda     #vertical_bar
  64.                 sta     ,x+             ;|........|
  65.  
  66.                 leax    70,x
  67.                 dec     ,s                      ;loop counter
  68.         until   eq
  69.         leas    2,s                             ;remove field descriptor
  70.                                                 ;and loop counter
  71.         bsr     bottom_line             ;[--------->
  72.  
  73.         puls    d,x,y
  74.         rts
  75. ;-------------------------------------------------------------------------------
  76. line    equ     *
  77.  
  78.         lda     #8
  79.         ldb     #horizontal_bar
  80.         loop
  81.                 stb     ,x+
  82.                 deca
  83.         until   eq
  84.         rts
  85. ;-------------------------------------------------------------------------------
  86. top_line        equ     *
  87.  
  88.         pshs    d
  89.         ldb     #left_top
  90.         stb     ,x+
  91.         bsr     line
  92.         ldb     #right_top
  93.         stb     ,x+
  94.         puls    d
  95.  
  96.         rts
  97. ;-------------------------------------------------------------------------------
  98. bottom_line     equ     *
  99.  
  100.         pshs    d
  101.         ldb     #left_bottom
  102.         stb     ,x+
  103.         bsr     line
  104.         ldb     #right_bottom
  105.         stb     ,x+
  106.         puls    d
  107.         rts
  108.  
  109. ;-------------------------------------------------------------------------------
  110. character_table equ     *
  111.  
  112. _NULL_  FCB      196 , 164 , 148 , 173 ,  33 ,  33 ,  33 ,  63
  113. _SOH_   FCB      112 , 128 ,  96 ,  16 , 233 ,  15 ,   9 ,   9
  114. _STX_   FCB      112 , 128 ,  96 ,  16 , 224 ,   9 ,   6 ,   9
  115. _ETX_   FCB      224 , 128 , 192 , 128 , 224 ,   9 ,   6 ,   9
  116. _EOT_   FCB      224 , 128 , 192 , 128 , 224 ,  31 ,   4 ,   4
  117. _ENQ_   FCB      224 , 128 , 192 , 128 , 238 ,  17 ,  18 ,  13
  118. _ACK_   FCB      240 , 144 , 240 , 145 ,  34 ,  60 ,  34 ,  33
  119. _BELL_  FCB       60 ,  66 ,  66 ,  66 , 129 , 129 , 126 ,  24
  120. _BS_    FCB      224 , 144 , 224 , 151 , 104 ,   6 ,   1 ,  14
  121. _HT_    FCB      144 , 240 , 144 , 144 ,  31 ,   4 ,   4 ,   4
  122. _LF_    FCB      128 , 128 , 128 , 240 ,  15 ,   8 ,  14 ,   8
  123. _VT_    FCB      136 , 136 ,  80 ,  32 ,  31 ,   4 ,   4 ,   4
  124. _FF_    FCB      240 , 128 , 192 , 128 ,  15 ,   8 ,  12 ,   8
  125. _CR_    FCB       96 , 128 , 128 , 111 ,  17 ,  30 ,  18 ,  17
  126. _SO_    FCB       96 , 128 ,  96 ,  32 , 206 ,  17 ,  17 ,  14
  127. _SI_    FCB       96 , 128 ,  96 ,  32 , 199 ,   2 ,   2 ,   7
  128. _DL_    FCB      224 , 144 , 144 , 224 ,   8 ,   8 ,   8 ,  15
  129. _D1_    FCB      224 , 144 , 144 , 230 ,   2 ,   2 ,   2 ,   7
  130. _DC2_   FCB      224 , 144 , 144 , 238 ,   1 ,   6 ,   8 ,  15
  131. _DC3_   FCB      224 , 144 , 144 , 239 ,   1 ,   3 ,   1 ,  15
  132. _DC4_   FCB      224 , 144 , 144 , 226 ,  10 ,  15 ,   2 ,   2
  133. _NAK_   FCB      144 , 208 , 176 , 145 ,  10 ,  12 ,  10 ,   9
  134. _SYN_   FCB       96 , 128 ,  96 ,  32 , 209 ,  10 ,   4 ,   4
  135. _ETB_   FCB      224 , 128 , 192 , 142 , 233 ,  14 ,   9 ,  14
  136. _CAN_   FCB      240 , 128 , 128 , 240 ,   9 ,  13 ,  11 ,   9
  137. _EM_    FCB      224 , 128 , 192 , 128 , 241 ,  27 ,  21 ,  17
  138. _SUB_   FCB      112 , 128 ,  96 ,  30 , 241 ,  30 ,  17 ,  30
  139. _ESC_   FCB      224 , 128 , 192 , 134 , 232 ,   6 ,   1 ,   6
  140. _FS_    FCB      240 , 128 , 224 , 134 , 136 ,   6 ,   1 ,   6
  141. _GS_    FCB      112 , 128 , 176 , 150 , 104 ,   6 ,   1 ,   6
  142. _RS_    FCB      224 , 144 , 224 , 150 , 152 ,   6 ,   1 ,   6
  143. _US_    FCB      144 , 144 , 144 , 246 ,   8 ,   6 ,   1 ,   6
  144. _SPACE_ FCB        0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 
  145. EXMARK  FCB       24 ,  24 ,  24 ,  24 ,  24 ,  24 ,   0 ,  24
  146. DQUOTE  FCB      102 , 102 , 102 ,   0 ,   0 ,   0 ,   0 ,   0
  147. NUMBER  FCB      102 , 102 , 255 , 102 , 102 , 255 , 102 , 102 
  148. DOLLAR  FCB       24 , 126 , 128 , 126 ,   1 , 126 ,  24 ,   0
  149. PERCENT FCB        1 ,  98 ,   4 ,   8 ,  16 ,  32 ,  70 , 128
  150. _AND_   FCB       60 ,  66 ,  36 ,  24 ,  40 ,  69 , 130 , 253
  151. SQUOTE  FCB       24 ,  24 ,  24 ,   0 ,   0 ,   0 ,   0 ,   0
  152. RLBRAK  FCB       24 ,  48 ,  96 , 192 , 192 ,  96 ,  48 ,  24
  153. RRBRAK  FCB       24 ,  12 ,   6 ,   3 ,   3 ,   6 ,  12 ,  24
  154. STAR    FCB      153 ,  90 ,  60 , 255 ,  60 ,  90 , 153 ,   0
  155. PLUS    FCB        0 ,   0 ,  24 , 255 ,  24 ,   0 ,   0 ,   0
  156. COMMA   FCB        0 ,   0 ,   0 ,   0 ,   8 ,   8 ,  16 ,  32
  157. MINUS   FCB        0 ,   0 ,   0 ,   0 , 255 ,   0 ,   0 ,   0
  158. DOT     FCB        0 ,   0 ,   0 ,   0 ,   0 ,  60 ,  60 ,  60
  159. SLASH   FCB        1 ,   2 ,   4 ,   8 ,  16 ,  32 ,  64 , 128
  160. _0_     FCB       60 ,  66 ,  66 ,  66 ,  66 ,  66 ,  66 ,  60
  161. _1_     FCB       56 ,  24 ,  24 ,  24 ,  24 ,  24 ,  24 ,  60
  162. _2_     FCB      126 , 129 ,   1 ,   2 ,  60 ,  64 , 128 , 255
  163. _3_     FCB      126 , 129 ,   2 ,  12 ,   2 ,   1 , 129 , 126
  164. _4_     FCB       14 ,  18 ,  34 ,  66 , 130 , 255 ,   2 ,   2
  165. _5_     FCB      255 , 128 , 128 , 126 ,   1 ,   1 , 129 , 126
  166. _6_     FCB       30 ,  32 ,  64 , 128 , 254 , 129 , 129 , 126
  167. _7_     FCB      255 ,   3 ,   6 ,  12 ,  24 ,  48 ,  48 ,  48
  168. _8_     FCB      126 , 129 , 129 , 126 , 129 , 129 , 129 , 126 
  169. _9_     FCB      126 , 129 , 129 , 127 ,   1 ,   2 ,   4 , 120
  170. COLON   FCB        0  , 24 ,   0 ,   0 ,   0 ,   0 ,  24 ,  0
  171. SEMI    FCB        0 ,  24 ,   0 ,   0 ,   0 ,  24 ,  24 ,  48
  172. LESS    FCB        0 ,   3 ,  12 ,  48 , 192 ,  48 ,  12 ,   3
  173. EQUAL   FCB        0 ,   0 , 255 ,   0 , 255 ,   0 ,   0 ,   0
  174. GREAT   FCB        0 , 192 ,  48 ,  12 ,   3 ,  12 ,  48 , 192
  175. QUEST   FCB      126 , 129 ,   2 ,   4 ,   8 ,  16 ,   0 ,  16
  176. AT      FCB      126 , 129 , 157 , 163 , 163 , 156 , 129 , 126 
  177. _A_     FCB      255 , 129 , 129 , 255 , 129 , 129 , 129 , 129 
  178. _B_     FCB      254 , 129 , 130 , 252 , 130 , 129 , 129 , 254 
  179. _C_     FCB      127 , 128 , 128 , 128 , 128 , 128 , 128 , 127 
  180. _D_     FCB      254 , 129 , 129 , 129 , 129 , 129 , 129 , 254 
  181. _E_     FCB      255 , 128 , 128 , 248 , 128 , 128 , 128 , 255 
  182. _F_     FCB      255 , 128 , 128 , 248 , 128 , 128 , 128 , 128 
  183. _G_     FCB      126 , 129 , 128 , 128 , 143 , 129 , 129 , 126 
  184. _H_     FCB      129 , 129 , 129 , 255 , 129 , 129 , 129 , 129 
  185. _I_     FCB       60 ,  24 ,  24 ,  24 ,  24 ,  24 ,  24 ,  60
  186. _J_     FCB       28 ,   4 ,   4 ,   4 ,   4 ,   4 ,  68 ,  56
  187. _K_     FCB      130 , 132 , 136 , 240 , 136 , 132 , 130 , 129 
  188. _L_     FCB      128 , 128 , 128 , 128 , 128 , 128 , 128 , 255 
  189. _M_     FCB      129 , 195 , 165 , 153 , 129 , 129 , 129 , 129 
  190. _N_     FCB      129 , 193 , 161 , 145 , 137 , 133 , 131 , 129 
  191. _O_     FCB      126 , 129 , 129 , 129 , 129 , 129 , 129 , 126 
  192. _P_     FCB      126 , 129 , 129 , 129 , 254 , 128 , 128 , 128 
  193. _Q_     FCB      126 , 129 , 129 , 129 , 137 , 133 , 122 ,   1
  194. _R_     FCB      126 , 129 , 129 , 129 , 254 , 132 , 130 , 129 
  195. _S_     FCB      126 , 129 , 128 , 126 ,   1 ,   1 , 129 , 126
  196. _T_     FCB      255 ,  24 ,  24 ,  24 ,  24 ,  24 ,  24 ,  24
  197. _U_     FCB      129 , 129 , 129 , 129 , 129 , 129 , 129 , 126 
  198. _V_     FCB      129 , 129 , 129 , 129 , 129 ,  66 ,  36 ,  24
  199. _W_     FCB      129 , 129 , 129 , 129 , 129 , 153 , 165 , 195 
  200. _X_     FCB      129 ,  66 ,  36 ,  24 ,  24 ,  36 ,  66 , 129
  201. _Y_     FCB      129 , 129 ,  66 ,  36 ,  24 ,  24 ,  24 ,  24
  202. _Z_     FCB      255 ,   1 ,   1 ,   6 ,  24 ,  96 , 128 , 255
  203. LSBRAK  FCB       60 ,  32 ,  32 ,  32 ,  32 ,  32 ,  32 ,  60
  204. BSLASH  FCB      128 ,  64 ,  32 ,  16 ,   8 ,   4 ,   2 ,   1
  205. RSBRAK  FCB       60 ,   4 ,   4 ,   4 ,   4 ,   4 ,   4 ,  60
  206. ARROW   FCB       24 ,  60 ,  90 , 153 ,  24 ,  24 ,  24 ,  24
  207. UNDER   FCB        0 ,   0 ,   0 ,   0 ,   0 ,   0 ,   0 , 255
  208. BQUOTE  FCB       32 ,  16 ,   8 ,   4 ,   0 ,   0 ,   0 ,   0
  209. _AA_    FCB        0 ,   0 , 124 ,   2 , 126 , 130 , 130 , 127
  210. _BB_    FCB      128 , 128 , 128 , 254 , 129 , 129 , 129 , 126 
  211. _CC_    FCB        0 ,   0 ,   0 , 127 , 128 , 128 , 128 , 127
  212. _DD_    FCB        1 ,   1 ,   1 , 127 , 129 , 129 , 129 , 127
  213. _EE_    FCB        0 ,   0 ,   0 , 126 , 129 , 254 , 128 , 126
  214.  FF_    FCB       14 ,  16 ,  16 ,  62 ,  16 ,  16 ,  16 ,  16
  215. _GG_    FCB      126 , 129 , 129 , 129 , 127 ,   1 ,   1 , 126
  216. _HH_    FCB      128 , 128 , 128 , 254 , 129 , 129 , 129 , 129 
  217. _II_    FCB       24 ,   0 ,   0 ,  24 ,  24 ,  24 ,  24 ,  60
  218. _JJ_    FCB       12 ,   0 ,  12 ,   4 ,   4 ,   4 ,  68 ,  56
  219. _KK_    FCB      192 , 192 , 192 , 195 , 204 , 240 , 204 , 195 
  220. _LL_    FCB       56 ,  24 ,  24 ,  24 ,  24 ,  24 ,  24 ,  60
  221. _MM_    FCB        0 ,   0 ,   0 , 238 , 145 , 145 , 145 , 145
  222. _NN_    FCB        0 ,   0 ,   0 , 190 , 193 , 129 , 129 , 129
  223. _OO_    FCB        0 ,   0 ,   0 , 126 , 129 , 129 , 129 , 126
  224. _PP_    FCB        0 ,   0 , 126 , 129 , 129 , 254 , 128 , 128
  225. _QQ_    FCB        0 ,   0 , 127 , 129 , 129 , 127 ,   1 ,   1
  226. _RR_    FCB        0 ,   0 ,   0 , 159 , 160 , 192 , 128 , 128
  227. _SS_    FCB        0 ,   0 ,   0 , 126 , 128 , 126 ,   1 , 126
  228. _TT_    FCB       32 ,  32 ,  32 , 124 ,  32 ,  32 ,  36 ,  24
  229. _UU_    FCB        0 ,   0 ,   0 , 129 , 129 , 129 , 129 , 127
  230. _VV_    FCB        0 ,   0 ,   0 , 129 , 129 ,  66 ,  36 ,  24
  231. _WW_    FCB        0 ,   0 ,   0 , 129 , 129 , 153 , 153 , 102
  232. _XX_    FCB        0 ,   0 ,   0 , 129 ,  66 ,  60 ,  66 , 129
  233. _YY_    FCB        0 ,   0 ,   0 , 129 , 130 , 124 ,  16 , 224
  234. _ZZ_    FCB        0 ,   0 ,   0 , 255 ,   6 ,  24 ,  96 , 255
  235. CLPAREN FCB       14 ,  16 ,  16 ,  96 ,  96 ,  16 ,  16 ,  14
  236. VBAR    FCB       24 ,  24 ,  24 ,  24 ,  24 ,  24 ,  24 ,  24
  237. CRPAREN FCB      112 ,   8 ,   8 ,   6 ,   6 ,   8 ,   8 , 112
  238. TILDA   FCB        0 ,   0 ,   0 ,  96 , 145 ,  14 ,   0 ,   0
  239. DELETE  FCB      170 ,  85 , 170 ,  85 , 170 ,  85 , 170 ,  85
  240. end
  241.